<template>
  <view>
    <button type="primary" open-type="getUserInfo" @getuserinfo="getUserBtn">微信登录</button>
  </view>
</template>

<script>
export default {
  onLoad() {
    // 获取用户信息
    this.getUserData();
  },
  methods: {
    // 登录>调用后台接口
    async login(userInfo) {
      // 参数：code用户凭证；微信用户账号信息
      // 获取code用户凭证
      const [error, code] = await uni.login();
      console.log("logn", error, code, userInfo);
      const { encryptedData, iv, rawData, signature } = userInfo;
      const {
        msg: { msg, status },
        data
      } = await this.request({
        url: "/api/public/v1/users/wxlogin",
        method: "post",
        data: {
          code: code.code,
          encryptedData,
          iv,
          rawData,
          signature
        }
      });
      // 登录成功
      if (status === 200) {
        // 存储token
        uni.setStorage({
          key: "go-token",
          data: data.token
        });
        uni.navigateBack();
      } else {
        uni.showToast({
          title: msg,
          duration: 2000
        });
      }
    },
    // 通过btn获取用户信息
    getUserBtn(res) {
      // console.log('btn',res);
      this.login(res.detail);
    },
    // 通过api获取用户信息
    async getUserData() {
      // uni.getUserInfo({
      //   success: res => {
      //     console.log(res);
      //   },
      //   fail: res => {
      //     console.log("error", res);
      //   }
      // });
      // 获取用户授权信息
      let [err, set] = await uni.getSetting();
      console.log("授权", err, set);
      if (!err && set.authSetting["scope.userInfo"]) {
        // 已经获取用户授权》获取个人信息
        let [error, userData] = await uni.getUserInfo();
        if (!error) {
          console.log("APi", error, userData);
          this.login(userData);
        }
      }
    }
  }
};
</script>

<style lang="scss" scoped>
button {
  width: 600rpx;
  margin: 200rpx auto 0;
}
</style>